<html>
<head></head>
<body>
Core interfaces and classes for models of biological objects and their interactions.

<p>
{@link biolabs.core.BioObject} is the main computational unit in a virtual experiment.
{@code BioObject}s are organized in a hierarchy with one bio-object as the root of the hierarchy.
Each lab except root has exactly one parent lab.
</p>

<h2>Interaction</h2>

<p>Interaction is the only means of communication between bio-objects in the hierarchy.</p>

<p>Direct interaction takes place only between parent-child or sibling-sibling.</p>

All interaction is managed from the top, i.e. always from the parental bio-object.
Data interchanged during interaction are encapsulated in an interaction delegate.
The general schema of an interaction managed from a parental bio-object is:
<ol>
	<li>collect interaction delegates from child bio-objects and (eventually) add some own;</li>
	<li>apply interaction algorithm on the interaction delegates;</li>
	<li>update child bio-objects with the result of the interaction.</li>
</ol>
An interaction algorithm operates on a number of interaction delegates.
These interaction delegates serve as both input and output for the algorithm.

</body>
</html>